/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.urbainski.estagio.entidade;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 * @author Cristian Elder Urbainski
 * @since 12/12/2011
 */

@Entity
@Table(name = "curso")
public class Curso implements Serializable {

	private static final long serialVersionUID = 1L;
    
	@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_curso")
    private Integer idCurso;
    
	@Column(name = "id_coordenador")
	private Integer idCoordenador;
	
    @Column(name = "nm_curso")
    private String nmCurso;
    
    @Column(name = "nr_duracao")
    private Integer nrDuracao;
    
    @Column(name = "nr_incricaomec")
    private String nrIncricaomec;
    
    @Column(name = "tp_situacao")
    private Integer tpSituacao;
    
    @Column(name = "dt_aberturacurso")
    @Temporal(TemporalType.DATE)
    private Date dtAberturacurso;
    
	@Transient
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "idCurso", fetch = FetchType.LAZY)
    private List<Turma> listaTurma;
    
    @ManyToOne(optional = false, fetch = FetchType.LAZY)
    @JoinColumn(name = "id_coordenador", referencedColumnName = "id_professor", insertable = false, updatable= false)
    private Professor coordenador;

	@Transient
	@OneToMany(cascade = CascadeType.ALL, mappedBy = "idCurso", fetch = FetchType.LAZY)
    private List<Aluno> listaAluno;

	public Integer getIdCurso() {
		return idCurso;
	}

	public void setIdCurso(Integer idCurso) {
		this.idCurso = idCurso;
	}

	public String getNmCurso() {
		return nmCurso;
	}

	public void setNmCurso(String nmCurso) {
		this.nmCurso = nmCurso;
	}

	public Integer getNrDuracao() {
		return nrDuracao;
	}

	public void setNrDuracao(Integer nrDuracao) {
		this.nrDuracao = nrDuracao;
	}

	public String getNrIncricaomec() {
		return nrIncricaomec;
	}

	public void setNrIncricaomec(String nrIncricaomec) {
		this.nrIncricaomec = nrIncricaomec;
	}

	public Integer getTpSituacao() {
		return tpSituacao;
	}

	public void setTpSituacao(Integer tpSituacao) {
		this.tpSituacao = tpSituacao;
	}

	public Date getDtAberturacurso() {
		return dtAberturacurso;
	}

	public void setDtAberturacurso(Date dtAberturacurso) {
		this.dtAberturacurso = dtAberturacurso;
	}

	public List<Turma> getListaTurma() {
		return listaTurma;
	}

	public void setListaTurma(List<Turma> listaTurma) {
		this.listaTurma = listaTurma;
	}

	public Integer getIdCoordenador() {
		return idCoordenador;
	}

	public void setIdCoordenador(Integer idCoordenador) {
		this.idCoordenador = idCoordenador;
	}

	public List<Aluno> getListaAluno() {
		return listaAluno;
	}

	public void setListaAluno(List<Aluno> listaAluno) {
		this.listaAluno = listaAluno;
	}

	 
    public Professor getCoordenador() {
		return coordenador;
	}

	public void setCoordenador(Professor coordenador) {
		this.coordenador = coordenador;
	}
}
